package cn.mxq.service.weixin;

import cn.mxq.domain.vo.WeixinTemplateMessageVO;
import cn.mxq.domain.req.WeixinQrCodeReq;
import cn.mxq.domain.res.WeixinQrCodeRes;
import cn.mxq.domain.res.WeixinTokenRes;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * @author Mxq
 * @description 微信Api服务
 * @create 26/3/2025 下午6:33
 */



public interface IWeixinApiService {


     /**
      * 获取 Access token
      * 文档：<a href="https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html">Get_access_token</a>
      *
      * @param grantType 获取access_token填写client_credential
      * @param appId     第三方用户唯一凭证
      * @param appSecret 第三方用户唯一凭证密钥，即appsecret
      * @return 响应结果
      */
     @GET("cgi-bin/token")
     Call<WeixinTokenRes> getToken(@Query("grant_type")String grantType,
                                   @Query("appid")String appId,
                                   @Query("secret")String appSecret); //query匹配参数名


     /**
      * 获取凭据 ticket
      * 文档：<a href="https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html">Generating_a_Parametric_QR_Code</a>
      * <a href="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET">前端根据凭证展示二维码</a>
      *
      * @param accessToken            getToken 获取的 token 信息
      * @param weixinQrCodeReq 入参对象
      * @return 应答结果
      */
     @POST("cgi-bin/qrcode/create")
     Call<WeixinQrCodeRes> createQrCode(@Query("access_token") String accessToken, @Body WeixinQrCodeReq weixinQrCodeReq); //body注解就是转json



     /**
      * 发送微信公众号模板消息
      * 文档：https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
      *
      * @param accessToken              getToken 获取的 token 信息
      * @param weixinTemplateMessageVO 入参对象
      * @return 应答结果
      */
     @POST("cgi-bin/message/template/send")
     Call<Void> sendMessage(@Query("access_token") String accessToken, @Body WeixinTemplateMessageVO weixinTemplateMessageVO);


}



